yield pauses the generator and returns the following value. Each next() returns an object { value, done }; before the first yield, the generator hasn't produced a value yet.
yield is an operator that can only be used inside generator functions. It pauses the generator's execution and returns the value following yield as the value property of the next() result. When a generator first starts, it runs until the first yield or return. After the last yield or return, subsequent next() calls return { done: true }.